package entitys

import (
	"rpcSrv/dbs/mysqlGORM"
	"rpcSrv/utils"
)

type User struct {
	//账户信息
	ID               int    `json:"id"`
	Step             int    `json:"step"`
	Openid           string `json:"openid"`
	Username         string `json:"username"`
	Password         string `json:"password"`
	Phone            string `json:"phone"`      //手机号
	Email            string `json:"email"`      //email
	Status           int    `json:"status"`     //1可用 0冻结
	Cover            int    `json:"cover"`      //封面 文件ID
	Nickname         string `json:"nickname"`   //昵称
	HeadImage        string `json:"head_image"` //头像 文件ID
	IsVirtual        int    `json:"is_virtual"` //是否真实用户
	GisID            int    `json:"gis_id"`
	VipExpire        int64  `json:"vip_expire"`
	CreatedTimestamp int64  `json:"created_timestamp"`
	UpdatedTimestamp int64  `json:"updated_timestamp"`
	Version          int64  `json:"version"` //乐观锁机制
}

func (u *User) TableName() string {
	return "user"
}

const user_schema = `
create table if not exists user
(
    id         int(10) not null auto_increment unique,
    step       tinyint      default 0,
    openid     varchar(35)  default null comment '微信openid',
    username   varchar(35)  default null comment '用户设置的用户名密码',
    password   varchar(35)  default null,
    phone      varchar(13)  default null comment '用户手机号',
    email      varchar(40)  default null comment '用户email',
    status     tinyint      default 1 comment '账号状态 1可用 0冻结',
    cover      int(10)      default null comment '封面图',
    nickname   varchar(40)  default null comment '账号昵称',
    head_image varchar(255) default null comment '头像',
    is_virtual tinyint      default 0 comment '是否虚拟用户 0不是 1是',
	gis_id     int(10)      default null comment 'gis坐标ID',
    vip_expire bigint(13)    default 0,
    created_timestamp bigint(13)    default 0,
    updated_timestamp bigint(13)    default 0,
	version           int(11) default 1 comment '乐观锁机制',
    primary key (id),
    index user_username (username) using btree,
    index user_openid (openid) using btree
) engine = INNODB
  default charset = utf8 comment '账号表';
`

func init() {
	db, err := mysqlGORM.GetMysqlDB()
	if utils.CheckErr(err) {
		return
	}
	tx := db.Begin()
	defer tx.Commit()
	if !db.HasTable(new(User).TableName()) {
		if err = tx.Exec(user_schema).Error; utils.CheckErr(err) {
			tx.Rollback()
			return
		}
	}
}
